/* 
 * File:   DrawingStrategyConjunction.h
 * Author: root
 *
 * Created on November 16, 2008, 6:00 PM
 */

#ifndef _DRAWINGSTRATEGYCOLLECTION_H
#define	_DRAWINGSTRATEGYCOLLECTION_H

#include "DrawingStrategy.h"
#include "DiscardStrategy.h"
#include "StrategyCodec.h"

class DrawingStrategyCollection : public DrawingStrategy {
    
    DrawingStrategy* collection[AVAILABLE_DRAWING];
    int numStrategies;
    
public:
    
    virtual int getDecisionCertainty();
    
    DrawingStrategyCollection(DrawingStrategy** strategyGroup) 
    : DrawingStrategy((int) 0), numStrategies(AVAILABLE_STRATEGIES[DRAWING]) {
        for (int i = 0; i < numStrategies; i++) {
            collection[i] = strategyGroup[i];
        }
    }
    
    virtual void setDiscardStrategy(DiscardStrategy* strategyRef);
    
    virtual Strategy* getActiveInstance(int) { return NULL; }
    
    virtual void setExecutionParameter(int index, int rangeFraction) {}
    
    virtual void opponentMove(int, const Move&);
    virtual bool pickFromDiscard(CCardStack*, const GameState*);
    
    virtual ~DrawingStrategyCollection() {
        for (int i = 0; i < numStrategies; i++) {
            delete collection[i];
        }
    }
    
};

#endif	/* _DRAWINGSTRATEGYCOLLECTION_H */

